//
//  STStatusListVM.m
//  OCVVeibo
//
//  Created by leergou on 16/7/27.
//  Copyright © 2016年 WhiteHouse. All rights reserved.
//

#import "STStatusListVM.h"
#import "STStatusDTO.h"
#import "STStatusVM.h"

@implementation STStatusListVM

// 单例
+ (instancetype)sharedStatusListVM{
    static STStatusListVM* instance;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[STStatusListVM alloc] init];
    });
    return instance;
}

//
- (void)loadHomeData:(void(^)(BOOL isSuccess))complete{
    // 请求首页数据
    [[STNetworkTools sharedTools] homeLoadDataWithSuccess:^(id response) {
//        NSLog(@"首页数据:%@",response);
        
        NSArray *dataArray = response[@"statuses"];
        // 定义一个临时可变数组
        NSMutableArray *tempArray = [NSMutableArray array];
        //遍历数组,将字典转为模型
        [dataArray enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            STStatusDTO *statusDTO = [STStatusDTO yy_modelWithDictionary:obj];
#warning 这里是手动对 原创微博中的配图字典转模型,不手动转,yy_model 不会自动转字典中的数组,会导致崩溃
            if (statusDTO.pic_urls.count > 0) {
                statusDTO.pic_urls = [self picDictionaryToModel:statusDTO.pic_urls];
            }
#warning 这里是手动对 转发微博中的配图字典转模型  ,不手动转,yy_model 不会自动转字典中的数组,会导致崩溃
            if (statusDTO.retweeted_status.pic_urls.count > 0) {
                statusDTO.retweeted_status.pic_urls = [self picDictionaryToModel:statusDTO.retweeted_status.pic_urls];
            }
            // 继续讲statusDTO 转为 statusVM
            // 继续讲 statusDTO 转为 StatusListVM
            STStatusVM *statusVM = [[STStatusVM alloc] initWithStatus:statusDTO];
            // 将模型加到可变数组
            [tempArray addObject:statusVM];
        }];
        // 赋值
        self.statusList = [tempArray copy];
        complete(YES);
    } failuer:^(NSError *error) {
        
        complete(NO);
    }];
}

#pragma mark - 配图字典转模型,方法抽取
- (NSArray *)picDictionaryToModel:(NSArray *)picDicArray{
    // 定义一个可变数组
    NSMutableArray *pictureMutableArray = [NSMutableArray array];
    // 遍历图片信息数组,将字典转为模型
    [picDicArray enumerateObjectsUsingBlock:^(NSDictionary * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        // 创建图片信息模型
        STStatusPictureInfo *statusPictureInfo = [STStatusPictureInfo yy_modelWithDictionary:obj];
        // 添加到可变数组
        [pictureMutableArray addObject:statusPictureInfo];
    }];
    return pictureMutableArray.copy;
}

#pragma mark - lazy
- (NSArray *)statusList{
    if (!_statusList) {
        _statusList = [NSMutableArray array];
    }
    return _statusList;
}


@end
